import type { App } from "vue";

import { createRouter, createWebHashHistory } from "vue-router";

/** import.meta.glob("*") 这是懒加载的
 * port.meta.glob("*",{eager: true}) 这是同步加载的，代替了import.meta.globEager
 * 注意：这里要用同步加载，modules文件是静态路由文件，需要直接加载，而每个路由对应的组件都是懒加载的，这里不要混淆
 */
const modules = import.meta.glob("./routes/modules/*.ts", {
  /** default 可以加载默认导出。 */
  import: "default",
  eager: true,
}) as Recordable;

/** 路由配置 */
const constRoutes = [];
for (const key in modules) {
  for (const route of modules[key]) {
    constRoutes.push(route);
  }
}

/* 创建一个可以被 Vue 应用使用的 Router 实例 */
export const router = createRouter({
  //创建一个 hash 历史记录,无需配置服务器
  history: createWebHashHistory(),

  // 是否应该禁止尾部斜杠。默认为假
  strict: true,

  //应该添加到路由器的初始路由列表。
  routes: constRoutes,
});

// 配置路由器
export function setupRouter(app: App<Element>) {
  app.use(router);
}
